/*
 * et2_edb.h - edbtool2 edb library adaption layer
 * Clunix, cezanne@clunix.com, 2004.12.20.
 *
 * $Id: et2_edb.h,v 1.1.1.1 2007/10/01 01:05:17 cezanne Exp $
 *
 * Copyright (c) 2001-2005 by Clunix Inc. All Rights Reserved.
 */
#ifndef _ET2_EDB_H_
#define _ET2_EDB_H_

#include "edb.h"

typedef struct {
	ECMBOOL	fakemode;
	edb_t	*ed;
	char	*snapshot;
	sr_t	*sr_snapshot_conf;
	sr_t	*sr_edbroot;
	sr_t	*sr_cwd;
} et2_edb_t;

#define et2_edb_get(e, LNP, EDExpr, opt, psr) \
		et2_edb_get_field(e, EDB_FIELD_VAL, LNP, EDExpr, opt, psr)

extern et2_edb_t *et2_edb_connect(const char *ipstr, ecm_uint16 port, const char *modname);
extern et2_edb_t *et2_edb_connect_fake(const char *snapshot);

extern edb_err_t et2_edb_get_field(et2_edb_t *pet2_edb, edb_field_t field, const char *LNP, const char *EDExpr, int opt, sr_t **psr_res);
extern edb_err_t et2_edb_get_modinfos(et2_edb_t *pet2_edb, sr_t **psr_res);
extern edb_err_t et2_edb_set_field(et2_edb_t *pet2_edb, edb_field_t field, const char *LNP, const char *EDExpr, const char *asrv, int opt);
extern void et2_edb_close(et2_edb_t *pet2_edb);
extern edb_err_t et2_edb_create_sr(et2_edb_t *pet2_edb, const char *LNP, const char *EDExpr, sr_t *sr);
extern edb_err_t et2_edb_xecreate(et2_edb_t *pet2_edb, const char *LNP, const char *EDExpr, const char *srname, const char *srtstr, sr_t **psr_res);
extern edb_err_t et2_edb_xedelete(et2_edb_t *pet2_edb, const char *LNP, const char *EDExpr, ECMBOOL force, sr_t **psr_res);
extern edb_err_t et2_edb_cd(et2_edb_t *pet2_edb, const char *LNP, const char *EDExpr, char **pcwd);
extern edb_err_t et2_edb_del(et2_edb_t *pet2_edb, const char *LNP, const char *EDExpr, int opt);
extern edb_err_t et2_edb_exec(et2_edb_t *pet2_edb, const char *edexpr, sr_t **psr_res);
extern edb_err_t et2_edb_elect(et2_edb_t *pet2_edb);
extern edb_err_t et2_edb_snapshot(et2_edb_t *pet2_edb);
extern edb_err_t et2_edb_shutdown(et2_edb_t *pet2_edb, const char *LNP);

extern edb_err_t et2_edb_adduser(et2_edb_t *pet2_edb, const char *username);
extern edb_err_t et2_edb_deluser(et2_edb_t *pet2_edb, const char *username);
extern edb_err_t et2_edb_setpasswd(et2_edb_t *pet2_edb, const char *username, const char *passwd);
extern edb_err_t et2_edb_addgroup(et2_edb_t *pet2_edb, const char *grpname);
extern edb_err_t et2_edb_delgroup(et2_edb_t *pet2_edb, const char *grpname);
extern edb_err_t et2_edb_addgrpuser(et2_edb_t *pet2_edb, const char *grpname, const char *username);
extern edb_err_t et2_edb_delgrpuser(et2_edb_t *pet2_edb, const char *grpname, const char *username);
extern edb_err_t et2_edb_getinheritedtypes_cmd(et2_edb_t *pet2_edb, srt_t srt_super, sr_t **psr_ret);

#ifdef ECM_DEBUG
extern edb_err_t et2_edb_dbgset(et2_edb_t *pet2_edb, const char *mdname, const char *dbgset);
extern edb_err_t et2_edb_mtrace_info(et2_edb_t *pet2_edb, sr_t **psr_res);
extern edb_err_t et2_edb_mtrace_on(et2_edb_t *pet2_edb, ecm_uint32 level);
extern edb_err_t et2_edb_mtrace_off(et2_edb_t *pet2_edb);
extern edb_err_t et2_edb_mtrace_clear(et2_edb_t *pet2_edb);
extern edb_err_t et2_edb_mtrace_report(et2_edb_t *pet2_edb, sr_t **psr_traces);

extern edb_err_t et2_edb_treelock_info(et2_edb_t *pet2_edb, sr_t **psr_res);

#endif

extern edb_err_t edb_get_field_fake(et2_edb_t *pet2_edb, edb_field_t edb_field, const char *LNP, const char *EDExpr, int opt, sr_t **psr_ret);
extern edb_err_t edb_get_modinfos_fake(et2_edb_t *pet2_edb, sr_t **psr_ret);
extern edb_err_t edb_set_field_fake(et2_edb_t *pet2_edb, edb_field_t field, const char *LNP, const char *EDExpr, const char *asrv, int opt);
extern edb_err_t edb_create_sr_fake(et2_edb_t *pet2_edb, const char *LNP, const char *EDExpr, sr_t *sr);
extern edb_err_t edb_del_fake(et2_edb_t *pet2_edb, const char *LNP, const char *EDExpr, int opt);
extern edb_err_t edb_cd_fake(et2_edb_t *pet2_edb, const char *LNP, const char *EDExpr, char **pcwd);
extern edb_err_t edb_snapshot_fake(et2_edb_t *pet2_edb);

#endif
